import chinaMap from "@/assets/json/china.json";

/**
 * 通用js方法封装处理
 * Copyright (c) 2019 code
 */

// 日期格式化
export function parseTime(time, pattern) {
    if (arguments.length === 0 || !time) {
        return null
    }
    const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
    let date
    if (typeof time === 'object') {
        date = time
    } else {
        if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
            time = parseInt(time)
        } else if (typeof time === 'string') {
            time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '');
        }
        if ((typeof time === 'number') && (time.toString().length === 10)) {
            time = time * 1000
        }
        date = new Date(time)
    }
    const formatObj = {
        y: date.getFullYear(),
        m: date.getMonth() + 1,
        d: date.getDate(),
        h: date.getHours(),
        i: date.getMinutes(),
        s: date.getSeconds(),
        a: date.getDay()
    }
    return format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
        let value = formatObj[key]
        // Note: getDay() returns 0 on Sunday
        if (key === 'a') {
            return ['日', '一', '二', '三', '四', '五', '六'][value]
        }
        if (result.length > 0 && value < 10) {
            value = '0' + value
        }
        return value || 0
    })
}

// 表单重置
export function resetForm(refName) {
    if (this.$refs[refName]) {
        this.$refs[refName].resetFields();
    }
}

/**
 * 参数处理
 * @param {*} params  参数
 */
export function tansParams(params) {
    let result = ''
    for (const propName of Object.keys(params)) {
        const value = params[propName];
        const part = encodeURIComponent(propName) + "=";
        if (value !== null && typeof (value) !== "undefined") {
            if (typeof value === 'object') {
                for (const key of Object.keys(value)) {
                    if (value[key] !== null && typeof (value[key]) !== 'undefined') {
                        let params = propName + '[' + key + ']';
                        const subPart = encodeURIComponent(params) + "=";
                        result += subPart + encodeURIComponent(value[key]) + "&";
                    }
                }
            } else {
                result += part + encodeURIComponent(value) + "&";
            }
        }
    }
    return result
}

/**
 * 中国地图实例创建
 * @param params 数据源
 * @param ele    绑定元素
 */
export function createReliefMaps(params) {
    // 创建之前先销毁
    this.$echarts.dispose(document.getElementById('china_map'))
    const myChart = this.$echarts.init(document.getElementById('china_map'), null, {devicePixelRatio: 2.5});
    const option = {
        grid: {
            top: 0,
            left: 0,
            right: 0,
            bottom: 0,
            containLabel: true
        },
        tooltip: {
            confine: true, //将 tooltip 框限制在图表的区域内，在移动端开发时非常有用
            formatter: function (params) {
                // console.log(params); // 当我们想要自定义提示框内容时，可以先将鼠标悬浮的数据打印出来，然后根据需求提取出来即可
                return '地区：' + params.name + '<br>' + '确诊：' + params.value
            }
        },
        visualMap: [
            {
                type: 'piecewise',
                // 位置信息
                top: 420,
                left: 15,
                pieces: [
                    {min: 10000, max: 1000000, label: '≥10000', color: '#b80909'},
                    {min: 1000, max: 9999, label: '1000-9999', color: '#e64546'},
                    {min: 100, max: 999, label: '100-999', color: '#f57567'},
                    {min: 10, max: 99, label: '10-99', color: '#ff9985'},
                    {min: 1, max: 9, label: '1-9', color: '#ffe5db'},
                    {min: 0, max: 0, label: '0', color: '#fefefe'},
                ],

                color: ['#E0022B', '#E09107', '#A3E00B']
            },
        ],
        nameMap: {
            '新疆维吾尔自治区': '新疆',
            '西藏自治区': '西藏',
            '内蒙古自治区': '内蒙古',
            '青海省': '青海',
            '四川省': '四川',
            '黑龙江省': '黑龙江',
            '甘肃省': '甘肃',
            '云南省': '云南',
            '广西壮族自治区': '广西',
            '湖南省': '湖南',
            '河北省': '河北',
            '陕西省': '陕西',
            '吉林省': '吉林',
            '湖北省': '湖北',
            '广东省': '广东',
            '贵州省': '贵州',
            '江西省': '江西',
            '河南省': '河南',
            '山东省': '山东',
            '山西省': '山西',
            '辽宁省': '辽宁',
            '安徽省': '安徽',
            '福建省': '福建',
            '江苏省': '江苏',
            '浙江省': '浙江',
            '重庆市': '重庆',
            '宁夏回族自治区': '宁夏',
            '台湾省': '台湾',
            '海南省': '海南',
            '北京市': '北京',
            '上海市': '上海',
            '天津市': '天津',
            '香港特别行政区': '香港',
            '澳门特别行政区': '澳门'
        },
        series: {
            type: 'map',
            name: '现存确诊',
            map: 'china',
            aspectScale: 0.75, //长宽比
            data: params,
            roam: false, //是否允许缩放，拖拽
            zoom: 1.25, //初始化大小
            label: {
                show: true,   // 地图上显示省份名
                color: 'rgb(0, 0, 0)',
                axisName: {
                    fontSize: 10,
                    fontWeight: 'bold',
                }
            },
            itemStyle: {
                borderWidth: 0.8, //设置外层边框
                borderColor: '#ccc', // #d243cd #3f15d6
            }

        },
    };
    // 将配置应用到地图上
    myChart.setOption(option, true);
    window.onresize = function () {
        myChart.resize();
    }
    myChart.on('click', function (params) {
        console.log(params);
    });

}
